const express = require('express')
const db = require('../database/index')
const utility = require('utility')
const router = express.Router()

// 定义路由 获取用户信息
router.get('/userinfo', (req, res) => {
    // console.log(req.user);
    // sql操作  在app中解析了参数 这边直接用req.user.id
    let sql = `select * from user where id=${req.user.id}`
    db(sql, (err, results) => {
        // 判断
        if (err) {
            throw err
            // return res.send({ message: err.message, status: 1 })
        }
        // 用户是否存在
        if (results.length !== 1) {
            // return res.send({ message: '用户名或者密码错误', status: 1 })
            throw new Error('用户名或者密码错误')
        }
        // 成功后响应客户端数据
        delete results[0].password //删除密码不显示
        res.send({
            state: 0,
            message: '获取用户信息成功！',
            data: results[0] //results返回的是数组，取出对象
        })

    })

    // res.send('获取用户信息成功！')
})

// 定义路由 更新用户信息

router.post('/userinfo', (req, res) => {
    let { id, nickname, email } = req.body
    // console.log(req.user);
    // sql操作  在app中解析了参数 这边直接用req.user.id
    // 根据id来更新nikename和email
    let sql = `update user set nickname="${nickname}",email="${email}" where id=${id}`
    db(sql, (err, results) => {
        // 判断
        if (err) {
            throw err
            // return res.send({ message: err.message, status: 1 })
        }
        // 用户是否存在
        if (results.length == 0) {
            // return res.send({ message: '用户名或者密码错误', status: 1 })
            throw new Error('用户名或者密码错误')
        }
        // 成功后响应客户端数据
        // delete results[0].password //删除密码不显示
        res.send({
            state: 0,
            message: '更新用户信息成功！',
        })

    })

})


// 更改密码 新旧密码都要加密 嵌套关系 根据id和旧密码查询用户 查询到了 让后把旧密码替换成新密码
// 挂载路由 
router.post('/updatepwd', (req, res) => {
    // 接收一下新旧密码
    let { oldPwd, newPwd } = req.body
    // 加密  
    oldPwd = utility.md5(oldPwd)
    newPwd = utility.md5(newPwd)
    // res.send(oldPwd,newPwd)
    // 数据操作
    let sql = `select * from user where id=${req.user.id} and  password="${oldPwd}"`
    db(sql, (err, results) => {
        // 判断
        if (err) {
            throw err
            // return res.send({ message: err.message, status: 1 })
        }
        // 用户是否存在
        if (results.length === 0) {
            // return res.send({ message: '用户名或者密码错误', status: 1 })
            throw new Error('用户名原始密码错误')
        }
        // 查询到了，更新密码 嵌套关系
        let sql = `update user set password="${newPwd}" where  id=${req.user.id}`
        db(sql, (err, results) => {
            if (err) throw err
            if (results.affectedRows !== 1) {
                return res.send({ message: '重置密码错误', state: 1 })
            }
            // 成功
            res.send({
                status: 0,
                message: "更新密码成功！"
            })
        })
    })
})

//更换用户头像 二级url
router.post("/update/avatar",(req,res)=>{
    // 就一个参数 直接用req.user.avatar
    //数据操作 set 后跟的是数据库的字段 设置的值为用户传来解析过的req.body.avatar
    let sql=`update user set user_pic="${req.body.avatar}" where id=${req.user.id} `
    db(sql,(err,results)=>{
        if (err) throw err
        if (results.affectedRows !== 1 ) {
            return res.send({ message: '修改用户头像失败！', state: 1 })
        }
        res.send({ message: '修改用户头像成功！', state:0 })
    })
}) 



module.exports = router